home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1997 August / Walnut Creek CDROM.7z / VOL_400 / 415_02 / CPP_LIBS / INCLUDE / LISTIMPL.H < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-07  |  2.3 KB  |  74 lines

  1. #ifndef     _H_LIST_IMPL
  2. #define     _H_LIST_IMPL
  3.  
  4. #ifndef    lint
  5. static const char list_impl_sccsid[]= "%W% %G% %U%: Component-%Y% %Q%";
  6. #endif   //  lint
  7.  
  8. #include   "cpp_entry.h"
  9. #include   "Listconsts.h"
  10.  
  11. class   ListImplAncestor ;
  12. class   ListIterAncestor ;
  13.  
  14. // the list meta-object - it essentially forms the base meta-object for this
  15. // component.
  16. class   ListMeta  :  public BaseMeta
  17.   {
  18.      public :
  19.       ListMeta() {  }  ;
  20.       ~ListMeta() { } ;
  21.       virtual  CLASS *instantiate(ImplSpec *) ;
  22.       RTTI_SCAFFOLDING_DECL(ListMeta)
  23.   } ; // declaration of the meta-class
  24.  
  25. // the iterator meta-object - it essentially forms the base meta-object for
  26. // the iterator sub-component
  27. class   IterMeta  :  public BaseMeta
  28.   {
  29.     public :
  30.       IterMeta() {  }  ;
  31.       ~IterMeta() { } ;
  32.       virtual  ListIterAncestor *instantiate(ImplSpec *,ListImplAncestor *);
  33.       virtual  ListIterAncestor *instantiate(ImplSpec *,ListImplAncestor &);
  34.       RTTI_SCAFFOLDING_DECL(IterMeta)
  35.  
  36.   } ; // declaration of the meta-class
  37.  
  38.  
  39. // Base object type for the entire hierarchy - contains the interface of
  40. // that all the implementations support - also provides a vehicle for
  41. // implementing the base meta-object for the inked list component.
  42. class ListImplAncestor : public virtual  CLASS
  43.  {
  44.   public :
  45.      ListImplAncestor() { } ;
  46.      virtual ~ListImplAncestor() { }
  47.      virtual void *remove_specific_elem(void *) { return NULL; } ;
  48.      virtual  ListImplAncestor *merge_lists(ListImplAncestor *,
  49.                 ListElemPriority ) { return NULL ; };
  50.      virtual void queue ( void *, ListElemPriority ) { } ;
  51.      virtual void *dequeue( void ) { return NULL ; } ;
  52.      ListMeta  *operator->() { return meta ; }
  53.      RTTI_SCAFFOLDING_DECL(ListImplAncestor)
  54.  
  55.      static    ListMeta    *meta ;
  56.  } ; // an abstract parent class that provides the common virtual functions
  57.  
  58. class  ListIterAncestor : public virtual CLASS
  59.   {
  60.     public :
  61.       ListIterAncestor() { } ;
  62.       ListIterAncestor(ListImplAncestor *) { } ;
  63.       ListIterAncestor(ListImplAncestor &) { } ;
  64.       virtual ~ListIterAncestor() { } ;
  65.       virtual void  reset(void ) { } ;
  66.       IterMeta  *operator->() { return meta ; }
  67.       virtual void *operator() () { return NULL ;  } ;
  68.       RTTI_SCAFFOLDING_DECL(ListIterAncestor)
  69.  
  70.       static  IterMeta   *meta ;
  71.   } ; // an abstract (kinda) parent class for the set of list iterators
  72.  
  73. #endif    // _H_LIST_IMPL
  74.